home *** CD-ROM | disk | FTP | other *** search
/ Floppyshop 2 / Floppyshop - 2.zip / Floppyshop - 2.iso / diskmags / 0022-3.564 / dmg-0086 / 426.txt < prev    next >
Text File  |  1997-04-16  |  30KB  |  772 lines

  1. =========================================================================
  2.  
  3. INFO-ATARI16 Digest         Mon,  9 Apr 90       Volume 90 : Issue  426
  4.  
  5. Today's Topics:
  6.              PD is not sacred (IMPORTANT -- PLEASE read)
  7. ----------------------------------------------------------------------
  8.  
  9. Date: 9 Apr 90 04:39:11 GMT
  10. From:
  11.  zaphod.mps.ohio-state.edu!uakari.primate.wisc.edu!uflorida!haven!wam!dmb@tut.ci
  12.  s.ohio-state.edu  (David M. Baggett)
  13. Subject: PD is not sacred (IMPORTANT -- PLEASE read)
  14. Message-ID: <1990Apr9.043911.26046@wam.umd.edu>
  15.  
  16. A certain magazine which will go unnamed (for now) has printed a version
  17. of the picture formats list nearly verbatim, and this magazine's editorial
  18. staff has taken credit for the compilation and editing of this information.
  19. The editor and many contributors were not given any credit.
  20.  
  21. It would be irresponsible of me (and probably pointless) to divulge the
  22. name of the publication at this time.  There is still the possibility
  23. that an unfortunate error was made and I do not want to malign the
  24. magazine or its staff.
  25.  
  26. In any case, everyone who is interested in distributing information and/or
  27. software for free should be aware:
  28.  
  29.    There are unethical and/or incompetent people in the world.
  30.  
  31. Shareware authors:  ALWAYS put a copyright notice and a distribution policy
  32. on everything you release.  Although these are not legally binding, they
  33. make your intentions clear and will deter individuals of various sorts
  34. from plagiarizing and/or stealing your work.  Such contractual statements
  35. can (in theory) make a difference in court as well.  (So I am told.)
  36.  
  37. I have added some legal/contractual stuff to the header of the picture
  38. formats list and humbly request that those of you who have found this
  39. information useful actively seek out and replace old copies of the list
  40. with this new version.  Perhaps then the following people will be given
  41. credit in the future for their help in making this document as
  42. popular as it has become:
  43.  
  44.  
  45.    Phil Blanchfield  Jason Blochowiak  David Brooks  Neil Forsyth
  46.  
  47.    Stefan Hoehn  Ken MacLeod   Jim McCabe  Darek Mihocka  David Mumper
  48.  
  49.    George Seto  Joe Smith  Greg Wageman  Roland Waldi  Gerry Wheeler
  50.  
  51.  
  52. I know old copies exist at terminator and at other FTP sites.  Please
  53. get rid of these old versions.  It will be _much_ appreciated.  Ditto
  54. for the online services (which I unfortunately don't have access too).
  55.  
  56. The new list is enclosed.
  57.  
  58. Thanks all,
  59.  
  60. Dave Baggett
  61. dmb@cscwam.umd.edu
  62.  
  63. -------------------------------------------------------------------------------
  64.  
  65.                            ST Picture Formats
  66.                            ------------------
  67.                                Edited by:
  68.  
  69.                               David Baggett
  70.                          5640 Vantage Point Road
  71.                          Columbia, MD  21044 USA
  72.                              (301)  596-4779
  73.                           (usenet: dmb@TIS.COM)
  74.  
  75.                    (Please report errors or additions)
  76.  
  77.            Copyright (C) 1988, 1989, 1990 by David M. Baggett
  78.  
  79.  
  80.     Non-profit redistribution of this document is permitted, provided
  81.     the document is not modified in any way.
  82.  
  83.     Reproduction of this document in whole or in part for  commercial
  84.     purposes is expressly forbidden without the prior written consent
  85.     of David M. Baggett.
  86.  
  87.     The  information  presented here is not guaranteed to be correct.
  88.     The author and contributors will in no event be liable for direct,
  89.     indirect, incidental, or consequential damages resulting from the
  90.     use of the information in this document.
  91.  
  92.     This document is the product of many hours of volunteer work by a
  93.     large number of people. Please respect this -- do not violate the
  94.     distribution policy.
  95.  
  96.  
  97.                               CONTRIBUTORS
  98.  
  99.       Phil Blanchfield  Jason Blochowiak  David Brooks  Neil Forsyth
  100.    Stefan Hoehn  Ken MacLeod   Jim McCabe  Darek Mihocka  David Mumper
  101.     George Seto  Joe Smith  Greg Wageman  Roland Waldi* Gerry Wheeler
  102.  
  103.                                 Contents
  104.                                 --------
  105.  
  106.         NEOchrome                               *.NEO
  107.         NEOchrome Animation                     *.ANI
  108.         DEGAS                                   *.PI?   ? = 1, 2, 3
  109.         DEGAS Elite                             *.PI?   ? = 1, 2, 3
  110.         DEGAS Elite (Compressed)                *.PC?   ? = 1, 2, 3
  111.         Tiny                                    *.TN?   ? = 1, 2, 3, Y
  112.         Spectrum 512                            *.SPU
  113.         Spectrum 512 (Compressed)               *.SPC
  114.         Art Director                            *.ART
  115.         C.O.L.R. Object Editor Mural            *.MUR
  116.         Doodle                                  *.DOO
  117.         Animatic Film                           *.FLM
  118.         GEM Bit Image                           *.IMG
  119.         Image                                   *.IMG
  120.         STAD                                    *.PAC
  121.         Imagic Film/Picture                     *.IC?   ? = 1, 2, 3
  122.         IFF                                     *.IFF
  123.         MacPaint
  124.  
  125.  
  126.                         Introductory Information
  127.                         ------------------------
  128. word    = 2 bytes
  129. long    = 4 bytes
  130. palette = Hardware color palette, stored as 16 words.  First word is
  131.           color register zero (background), last word is color register
  132.           15.  Each word has the form:
  133.  
  134.           Bit:  (MSB) 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (LSB)
  135.                       -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  136.                        0  0  0  0  0 R2 R1 R0  0 G2 G1 G0  0 B2 B1 B0
  137.  
  138.           R2 = MSB of red intensity
  139.           R0 = LSB of red intensity
  140.  
  141.           G2 = MSB of green intensity
  142.           G0 = LSB of green intensity
  143.  
  144.           B2 = MSB of blue intensity
  145.           B0 = LSB of blue intensity
  146.  
  147.           Intensity ranges from 0 (color not present) to 7 (highest
  148.           intensity).
  149.  
  150.           Example: ? red = 7, green = 3, blue = 5 ? -> 0735 (hex)
  151.  
  152.           Caveat:  It is wise to mask off the upper four bits of each
  153.                    palette entry, since a few programs store special
  154.                    information there (most notably Art Studio).
  155.  
  156.  
  157.                              The Formats
  158.                              -----------
  159.  
  160. <NEOchrome>     *.NEO
  161.  
  162. 1 long          resolution (0 = low res, 1 = medium res, 2 = high res)
  163. 16 words        palette
  164. 12 bytes        filename (usually "        .   ")
  165. 1 byte          unused (?) (usually either 80 hex or 0)
  166. 1 byte          color animation limits (4 most significant bits are
  167.                 left/lower limit; 4 least significant bits are
  168.                 right/upper limit).
  169. 1 byte          color animation enabled?  High bit set if yes.
  170. 1 byte          color animation speed and direction
  171.                 x = 0 means animation stopped
  172.                 x < 0 means colors cycle to the left (decreasing)
  173.                 x > 0 means colors cycle to the right (ascending)
  174.                 Number of vblanks between cycles is |x| - 1
  175. 19 longs        reserved for expansion
  176. 16000 words     picture data (screen memory)
  177. -----------
  178. 32128 bytes     total
  179.  
  180.  
  181. <NEOchrome Animation>        *.ANI
  182.  
  183. NOTE:      To get this feature on versions 0.9 and later select the Grabber
  184.         icon and click both mouse buttons in the eye of the second R in the
  185.         word GRABBER.
  186.            Interestingly enough, some versions of NEO only require you
  187.         to press the right button, not both.  Hmmm...
  188.  
  189. 1 long          magic number BABEEBEA (hex) (seems to be ignored)
  190. 1 word          width of image in bytes (always divisible by 8)
  191. 1 word          height of image in scan lines
  192. 1 word          size of image in bytes + 10 (!)
  193. 1 word          x coordinate of image (must be divisible by 16) - 1
  194. 1 word          y coordinate of image - 1
  195. 1 word          number of frames
  196. 1 word          animation speed (# vblanks to delay between frames)
  197. 1 long          reserved; should be zero
  198. --------
  199. 22 bytes        total for header
  200.  
  201. ? words         image data (words of screen memory) for each frame, in
  202.                 order
  203.  
  204.  
  205. <DEGAS>         *.PI1 (low resolution)
  206.                 *.PI2 (medium resolution)
  207.                 *.PI3 (high resolution)
  208.  
  209. 1 word          resolution (0 = low res, 1 = medium res, 2 = high res)
  210.                 Other bits may be used in the future; use a simple bit
  211.                 test rather than checking for specific word values.
  212. 16 words        palette
  213. 16000 words     picture data (screen memory)
  214. -----------
  215. 32034 bytes     total
  216.  
  217.  
  218. <DEGAS Elite>   *.PI1 (low resolution)
  219.                 *.PI2 (medium resolution)
  220.                 *.PI3 (high resolution)
  221.  
  222. 1 word          resolution (0 = low res, 1 = medium res, 2 = high res)
  223.                 Other bits may be used in the future; use a simple bit
  224.                 test rather than checking for specific word values.
  225. 16 words        palette
  226. 16000 words     picture data (screen memory)
  227. 4 words         left color animtion limit table (starting color numbers)
  228. 4 words         right color animation limit table (ending color numbers)
  229. 4 words         animation channel direction flag (0 = left, 1 = off, 2 = right)
  230. 4 words         128 - animation channel delay in 1/60's of a second. [0 - 128]
  231.                 (I.e., subtract word from 128 to get 1/60th's of a second.)
  232. -----------
  233. 32066 bytes     total
  234.  
  235.  
  236. <DEGAS Elite (Compressed)>      *.PC1 (low resolution)
  237.                                 *.PC2 (medium resolution)
  238.                                 *.PC3 (high resolution)
  239.  
  240. 1 word          resolution (same as Degas, but high order bit is set;
  241.                 i.e., hex 8000 = low res, hex 8001 = medium res,
  242.                 hex 8002 = high res).  Other bits may be used in the
  243.                 future; use a simple bit test rather than checking
  244.                 for specific word values.
  245. 16 words        palette
  246. < 32000 bytes   control bytes
  247. 4 words         left color animtion limit table (starting color numbers)
  248. 4 words         right color animation limit table (ending color numbers)
  249. 4 words         animation channel direction flag (0 = left, 1 = off, 2 = right)
  250. 4 words         128 - animation channel delay in 1/60's of a second. [0 - 128]
  251.                 (I.e., subtract word from 128 to get 1/60th's of a second.)
  252. -----------
  253. < 32066 bytes   total
  254.  
  255. Control byte meanings:
  256.  
  257.         For a given control byte, x:
  258.  
  259.         0 <= x <= 127   Use the next x + 1 bytes literally (no repetition)
  260.         -127 <= x <= -1 Use the next byte -x + 1 times
  261.         -128            No operation (not used)
  262.  
  263. Compression Scheme:
  264.  
  265.    Each scan line is compressed separately; i.e., all data for a given
  266. scan line appears before any data for the next scan line.  The scan lines
  267. are specified from top to bottom (i.e., 0 is first).  For each scan line,
  268. all the data for a given bit plane appears before any data for the next
  269. higher order bit plane.
  270.    To clarify:  The first data in the file will be the data for the highest
  271. order bit plane of scan line zero, followed by the data for the next lower
  272. order bit plane of scan line zero, etc., until all bit planes have been
  273. specified for scan line zero.  The next data in the file will be the data
  274. for the highest order bit plane of scan line one, followed by the data for
  275. the next lower order bit plane of scan line one, etc., until all bit planes
  276. have been specified for all scan lines.
  277.  
  278. Caveats:
  279.  
  280.    DEGAS Elite's picture loading routine places some restrictions on
  281. compressed DEGAS files:
  282.  
  283.         o Elite uses a 40-byte buffer to store data being decompressed.
  284.  
  285.         o Whenever a control command is encountered, bytes are stuffed
  286.         in this buffer.
  287.  
  288.         o The buffer is only emptied when there are EXACTLY 40
  289.         characters in it.
  290.  
  291. The important conclusion here is that
  292.  
  293.         No control command may cause the buffer to have more than 40
  294.         bytes in it.  In other words, all control commands must end on
  295.         or before the 40-byte boundary.
  296.  
  297. Any picture violating the last condition will cause Elite to get a bus
  298. error when the picture is loaded.
  299.  
  300.  
  301. <Tiny>  *.TNY (any resolution)
  302.         *.TN1 (low resolution)
  303.         *.TN2 (medium resolution)
  304.         *.TN3 (high resolution)
  305.  
  306.    Several people have reported sightings of mutated Tiny pictures that
  307. do not follow the standard format, so let's be careful out there.  What
  308. is described here is the format that David Mumper's original
  309. TNYSTUFF.PRG produces.
  310.  
  311. 1 byte          resolution (same as NEO, but +3 indicates rotation
  312.                 information also follows)
  313.  
  314. If resolution > 2 ?
  315. 1 byte          left and right color animation limits.  High 4 bits
  316.                 hold left (start) limit; low 4 bits hold right (end)
  317.                 limit
  318. 1 byte          direction and speed of color animation (negative value
  319.                 indicates left, positive indicates right, absolute value
  320.                 is delay in 1/60's of a second.
  321. 1 word          color rotation duration (number of iterations)
  322. ?
  323.  
  324. 16 words        palette
  325. 1 word          number of control bytes
  326. 1 word          number of data words
  327. 3-10667 bytes   control bytes
  328. 1-16000 words   data words
  329. -------------
  330. 42-32044 bytes  total
  331.  
  332. Control byte meanings:
  333.  
  334.         For a given control byte, x:
  335.  
  336.         x < 0   Absolute value specifies the number of unique words to
  337.                 take from the data section (from 1 to 127)
  338.         x = 0   1 word is taken from the control section which specifies
  339.                 the number of times to repeat the next data word (from
  340.                 128 to 32767)
  341.         x = 1   1 word is taken from the control section which specifies
  342.                 the number of unique words to be taken from the data
  343.                 section (from 128 - 32767)
  344.         x > 1   Specifies the number of times to repeat the next word
  345.                 taken from the data section (from 2 to 127)
  346.  
  347. Format of expanded data:
  348.  
  349.    The expanded data is not simply screen memory bitmap data; instead, the
  350. data is divided into four sets of vertical columns.  (This results in
  351. better compression.)  A column consists of one specific word taken
  352. from each scan line, going from top to bottom.  For example, column 1
  353. consists of word 1 on scanline 1 followed by word 1 on scanline 2, etc.,
  354. followed by word 1 on scanline 200.
  355.    The columns appear in the following order:
  356.  
  357.    1st set contains columns 1, 5,  9, 13, ..., 69, 73, 77 in order
  358.    2nd set contains columns 2, 6, 10, 14, ..., 70, 74, 78 in order
  359.    3rd set contains columns 3, 7, 11, 15, ..., 71, 75, 79 in order
  360.    4th set contains columns 4, 8, 12, 16, ..., 72, 76, 80 in order
  361.  
  362. Note that Tiny partitions the screen this way regardless of resolution; i.e.,
  363. these aren't bitplanes.  For example, medium resoltion only has two bitplanes,
  364. but Tiny still divides medium resolution pictures into four parts.
  365.  
  366.  
  367. <Spectrum 512>  *.SPU
  368.  
  369. 80 words        first scan line of picture (unused) -- should be zeroes
  370. 15920 words     picture data (screen memory) for scan lines 1 through 199
  371. 9552 words      3 palettes for each scan line (the top scan line is
  372.                 not included because Spectrum 512 can't display it)
  373. -----------
  374. 51104 bytes     total
  375.  
  376.  
  377. <Spectrum 512 (Compressed)>        *.SPC
  378.  
  379. 1 word          5350 (hex) ("SP")
  380. 1 word          0 (reserved for future use)
  381. 1 long          length of data bit map
  382. 1 long          length of color bit map
  383. <= 32092 bytes  compressed data bit map
  384. <= 17910 bytes  compressed color bit map
  385. --------------
  386. < 50014 bytes   total
  387.  
  388. Data compression:
  389.  
  390.    Compression is via a modified run length encoding (RLE) scheme,
  391. similar to DEGAS compressed and Tiny.  The data map is stored as a
  392. sequence of records.  Each record consists of a header byte followed by
  393. one or more data bytes.  The meaning of the header byte is as follows:
  394.  
  395.         For a given header byte, x:
  396.  
  397.         0 <= x < 127    Use the next x + 1 bytes literally (no repetition)
  398.         -128 <= x < 0   Use the next byte -x + 2 times
  399.  
  400. The data appears in the following order:
  401.  
  402.         1. Picture data, bit plane 0, scan lines 1 - 199
  403.         2. Picture data, bit plane 1, scan lines 1 - 199
  404.         3. Picture data, bit plane 2, scan lines 1 - 199
  405.         4. Picture data, bit plane 3, scan lines 1 - 199
  406.  
  407. Decompression of data ends when 31840 data bytes have been used.
  408.  
  409. Color map compression:
  410.  
  411.    Each 16-word palette is compressed separately.  There are three
  412. palettes for each scan line (597 total).  The color map is stored as a
  413. sequence of records.  Each record starts with a 1-word bit vector which
  414. specifies which of the 16 palette entries are included in the data
  415. following the bit vector (1 = included, 0 = not included; i.e., stays
  416. the same).  The least significant bit of the bit vector refers to
  417. palette entry zero, while the most significant bit refers to palette
  418. entry 15.  Bit 15 must be zero, since Spectrum 512 does not use palette
  419. entry 15.  Bit 0 should also be zero, since Spectrum 512 always makes the
  420. background color black.
  421.    The words specifying the values for the palette entries indicated in
  422. the bit vector follow the bit vector itself, in order (0 - 15).
  423.    Yes, it is hideously complex.
  424.  
  425.  
  426. <Art Director>  *.ART (low resolution only)
  427.  
  428. 16000 words     picture data (screen memory)
  429. 16 words        palette
  430. 15 * 16 words   15 more palettes for animation
  431. -------------
  432. 32512 bytes     total
  433.  
  434.  
  435. <C.O.L.R. Object Editor Mural>        *.MUR (low resolution only)
  436.  
  437. 16000 words     picture data (screen memory)
  438.                 (palettes are stored in separate files)
  439. -----------
  440. 32000 bytes     total
  441.  
  442.  
  443. <Doodle>        *.DOO (high resolution only)
  444.  
  445. 16000 words     picture data (screen memory)
  446. -----------
  447. 32000 bytes     total
  448.  
  449.  
  450. <Animatic Film> *.FLM (low resolution only)
  451.  
  452. 1 word          number of frames
  453. 16 words        palette
  454. 1 word          speed (0 - 99; value is 99 - # vblanks to delay between frames)
  455. 1 word          direction (0 = forwards, 1 = backwards)
  456. 1 word          end action (what to do after the last frame)
  457.                 0 = pause, then repeat from beginning
  458.                 1 = immediately repeat from beginning
  459.                 2 = reverse (change direction)
  460. 1 word          width of film in pixels
  461. 1 word          height of film in pixels
  462. 1 word          Animatic version number (major)
  463. 1 word          Animatic version number (minor)
  464. 1 long          magic number 27182818 (hex)
  465. 3 longs         reserved for expansion (should be all zeros)
  466. --------
  467. 32 words        total for header
  468.  
  469. ? words         image data (words of screen memory) for each frame, in order
  470.  
  471.  
  472. <GEM Bit Image> *.IMG
  473.  
  474. 2 words         upper left x,y of bit image
  475. 2 words         lower right x,y of bit image
  476. 1 word          device page width
  477. 1 word          device page height
  478. 1 word          device pixel width in microns
  479. 1 word          device pixel height in microns
  480. 1 word          NBITSPPXL, (bits per pixel, planes, for color information)
  481. 7 words         reserved (0)
  482. --------
  483. 32 bytes        total for header
  484.  
  485. ? bytes         data
  486.  
  487. Format of data
  488.  
  489. Run-length packet:
  490.   +0      [1]  run length   (1..127)
  491.   +1      [1]  color index  (1..255)
  492.  
  493. Extended packet:
  494.   +0      [1]  -1 (opcode, $FF)
  495.   +1      [1]  extended run length (i.e. *128 pixels)
  496.   +2      [1]  color index
  497.  
  498. Raster packet:
  499.   +0      [1]  -2 (opcode, $FE)
  500.   +1      [1]  NPXL, # of pixels in stream
  501.   +2      [..] packed color indices [NPXL*NBITSPPXL bits]
  502.  
  503. Raster-run packet:
  504.   +0      [1]  ? (opcode)
  505.   +1      [1]  pattern repeat count
  506.   +2      [1]  NPXL, # of pixels in stream
  507.   +3      [..] packed color indices
  508.  
  509.  
  510. <Image>         *.IMG
  511.  
  512. 1 word          version number of image file
  513. 1 word          length of header in words [8]
  514. 1 word          number of color planes
  515. 1 word          pattern length in bytes [2]
  516. 1 word          pixel width in 1/1000 mm
  517. 1 word          pixel height in 1/1000 mm
  518. 1 word          line width in pixels
  519. 1 word          number of lines
  520. -------
  521. 16 bytes        total for header
  522.  
  523. ? bytes         data
  524.  
  525. For each byte x in the data section,
  526.  
  527.         x = 0           Pattern/scanline run.
  528.                         Read the next byte, n (unsigned).
  529.  
  530.                         If n > 0 then:
  531.                                 Read a number of bytes equal to the "pattern
  532.                                 length" word in the header.  Repeat this
  533.                                 pattern n times.
  534.  
  535.                         If n = 0 then:
  536.                                 Scanline run.  Data for the next scanline
  537.                                 is to be used multiple times.  Read the
  538.                                 following record:
  539.  
  540.                                 1 word          unused (?) [255]
  541.                                 1 word          number of times to use
  542.                                                 next scanline data
  543.  
  544.                                 The data for the next scanline follows,
  545.                                 compressed normally.
  546.  
  547.         x = 80 (hex)    Uncompressed bit string.  The next byte
  548.                         determines the number of bytes (?) to use
  549.                         literally.  The literal data bytes follow.
  550.  
  551.         otherwise       Monochrome run.  The value of x determines
  552.                         what to draw.  The high bit specifies the color.
  553.                         The low 7 bits, taken as an unsigned quantity,
  554.                         specify the length of the run (the number
  555.                         of pixels to draw).
  556.  
  557.  
  558. <STAD>          *.PAC (high resolution only)
  559.  
  560. 4 bytes         "pM86" (vertically packed) or "pM85" (horizontally packed)
  561. 1 byte          id byte
  562. 1 byte          pack byte (most frequently occuring byte in bitmap)
  563. 1 byte          "special" byte
  564. -------
  565. 7 bytes         total for header
  566.  
  567. ? bytes         data
  568.  
  569. The data is encoded as follows.  For each byte x in the data section:
  570.  
  571.         x = id byte             Read one more byte, n.  Use pack byte
  572.                                 n + 1 times.
  573.         x = "special" byte      Read two more bytes, d, and n (in order).
  574.                                 Use byte d n times.
  575.         otherwise               Use byte x literally.
  576.  
  577.  
  578. <Imagic Film/Picture>           *.IC1 (low resolution)
  579.                                 *.IC2 (medium resolution)
  580.                                 *.IC3 (high resolution)
  581.  
  582. 4 bytes         "IMDC"
  583. 1 word          resolution (0 = low res, 1 = medium res, 2 = high res)
  584. 16 words        palette
  585. 1 word          date (GEMDOS format)
  586. 1 word          time (GEMDOS format)
  587. 8 bytes         name of base picture file (for delta compression), or zeroes
  588. 1 word          length of data (?)
  589. 1 long          registration number
  590. 8 bytes         reserved
  591. 1 byte          compressed? (0 = no, 1 = yes)
  592.  
  593. If compressed ?
  594. 1 byte          delta-compressed? (-1 = no, > -1 = yes)
  595. 1 byte          ?
  596. 1 byte          escape byte
  597. ?
  598. -------
  599. 65 bytes        total for header (68 bytes if compressed)
  600.  
  601. ? bytes         data
  602.  
  603.    Compressed data may be either stand-alone or delta-compressed (relative
  604. to the base picture named in the header).  Delta compression involves
  605. storing only how the picture differs from the base picture (i.e., only
  606. portions of the screen that have changed are stored).  This is used to
  607. to encode animated sequences efficiently.
  608.  
  609. Compressed data, stand-alone:
  610.  
  611. For each byte x in the data section:
  612.  
  613.         x = escape byte         Read one more byte, n.  (n is unsigned).
  614.  
  615.                                 If n >= 2, use the next byte n times.
  616.                                 If n = 1, keep reading bytes until a
  617.                                 byte k not equal to 1 is encountered.
  618.                                 Then read the next byte d.
  619.                                 If the number of 1 bytes encountered is o,
  620.                                 use d (256 * o + k) times.  I.e.,
  621.  
  622.                                 if (n == 1) ?
  623.                                         o = 0;
  624.                                         while (n == 1) ?
  625.                                                 o++;
  626.                                                 n = next byte;
  627.                                         ?
  628.  
  629.                                         k = n;
  630.                                         d = next byte;
  631.  
  632.                                         Use d (256 * o + k) times.
  633.                                 ?
  634.                                 else ?
  635.                                         d = next byte;
  636.                                         Use d (n) times.
  637.                                 ?
  638.  
  639.         x != escape byte        Use x literally.
  640.  
  641. Compressed data, delta compressed:
  642.  
  643. For each byte x in the data section:
  644.  
  645.         x = escape byte         Read one more byte, n.  (n is unsigned).
  646.  
  647.                                 If n >= 3, use the next byte n times.
  648.                                 If n = 1, do the same as for n = 1 in
  649.                                 stand-alone compression (above).
  650.                                 If n = 2, then set n = next byte.
  651.                                         If n = 0, end of picture.
  652.                                         If n >= 2, take n bytes from base
  653.                                         picture.
  654.                                         If n = 1, do the same as for n = 1
  655.                                         in stand-alone compression (above),
  656.                                         but take (256 * o + k) bytes from
  657.                                         base picture.
  658.  
  659.         x != escape byte        Use x literally.
  660.  
  661.  
  662. <IFF Format>    *.IFF
  663.  
  664. 4 bytes         "FORM"
  665. 8 bytes         form chunk: 1 long = length (8)
  666.                             4 bytes = ID ("ILBM")
  667. 4 bytes         "BMHD"
  668. 20 bytes        BMHD chunk: 1 long = length (20)
  669.                 (BitMap     1 word = x width (pixel)
  670.                  HeaDer)    1 word = y height (pixel)
  671.                             1 word = x-offset (pixel)
  672.                             1 word = y-offset (pixel)
  673.                             1 byte = # bitplanes
  674.                             1 byte = mask (0=no, 1=impl., 2=transparent,
  675.                                            3=lasso)
  676.                             1 byte = compressed (1) or expanded (0)
  677.                             1 byte = 0
  678.                             1 word = transparent color (for mask=2)
  679.                             1 byte = x-aspect
  680.                             1 byte = y-aspect
  681.                             1 word = page width
  682.                             1 word = page height
  683. 4 bytes         "CMAP"
  684. 3n+8 bytes      CMAP chunk: 1 long = length (3n + 8 for n colors)
  685.                 (Color      3 words = R,G,B color 0
  686.                    MAP)     ...
  687.                             3 words = R,G,B color n
  688. 4 bytes         "CRNG"
  689. 8 bytes                CRNG chunk: 1 long = length (8)
  690.                 (Color      1 word = 0
  691.                  RaNGe)     1 word = animation speed
  692.                             1 word = active (1) or inactive (0)
  693. 4 bytes         "BODY"
  694. ? bytes                body chunk: picture expanded/compressed
  695.  
  696. Format of body data
  697.  
  698. An expanded picture is simply a bitmap.  The compressed data consists
  699. of records of single control bytes followed by data.
  700.  
  701.         For a given control byte, x:
  702.  
  703.         0 <= x <= 127   Use the next x + 1 bytes literally (no repetition)
  704.         -128 <= x <= -1 Use the next byte -x + 1 times
  705.  
  706. The (decompressed) body data appears in the following order:
  707.  
  708.         line 1 plane 0 ... line 1 plane 1 ... ... line 1 plane m
  709.         [line 1 mask (if appropriate)]
  710.         line 2 plane 0 ... line 2 plane 1 ... ... line 2 plane m
  711.         [line 2 mask (if appropriate)]
  712.         ...
  713.         line x plane 0 ... line x plane 1 ... ... line x plane m
  714.         [line x mask (if appropriate)]
  715.  
  716. The FORM chunk identifies the type of data:
  717.  
  718.         "ILBM" = interleaved bit map
  719.         "8SVX" = 8-bit sample voice
  720.         "SMUS" = simple music score
  721.         "FTXT" = formatted text (Amiga)
  722.  
  723. Note:
  724. The R,G,B ranges of AMIGA and ST are different (AMIGA 0...15, ST 0...7),
  725. as is the maximum number of bitplanes (AMIGA: 5, ST: 4).
  726.  
  727. Animation speed of 16384 means 1 full rotation in 1/60's of a second.
  728.  
  729.  
  730. <MacPaint>
  731.  
  732.    Word has it that this is wrong.  Someone please send me an accurate
  733. description!
  734.  
  735. header ?
  736. 1 long          version number (if zero, entire header is ignored)
  737. 38 * 2 longs    pattern data (anyone know how to use this?)
  738. 83 longs        reserved
  739. ?                            (total 160 longwords for header)
  740. < 51200 bytes   compressed bitmap data
  741. -------------
  742. < 51716 bytes   total
  743.  
  744. Bitmap compression:
  745.  
  746.    The bitmap data is for a 576 pixel by 720 pixel monochrome image.
  747. The data is stored as a sequence of records.  Each record consists of a
  748. control byte followed by one or more data bytes.  The meaning of the
  749. control byte is as follows:
  750.  
  751.         For a given control byte, x:
  752.  
  753.         0 < x < 127     Use the next x + 1 bytes literally (no repetition)
  754.         -128 <= x <= 0  Use the next byte -x + 1 times
  755.  
  756. There are 72 bytes per scan line.  Each bit represents one pixel; 0 = white,
  757. 1 = black.
  758.  
  759. -------------------------------------------------------------------------
  760.  
  761. * Roland Waldi contributed extensive information on the following formats:
  762.  
  763.         GEM, IMG, Doodle, STAD, Imagic Film/Picture, Art Director, IFF
  764.  
  765.  
  766. Version of Mon Apr  9 00:24:07 EDT 1990
  767.  
  768. ------------------------------
  769.  
  770. End of INFO-ATARI16 Digest V90 Issue #426
  771. *****************************************
  772.